package com.example.first_android.fragment

import android.content.Context
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import com.example.first_android.R


class ListFragment : Fragment() {
interface OnItemSelectedListener {
    fun onItemSelected(itemId: Int)
}
    // 声明一个变量来保存实现了OnItemSelectedListener接口的监听器实例
    private var listener: OnItemSelectedListener? = null
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_list, container, false)
    }
override fun onViewCreated(view: View, savedInstanceState: Bundle?){
    super.onViewCreated(view, savedInstanceState)
    // 为item1按钮设置点击监听器，当点击时通知监听器选中了ID为1的项
    view.findViewById<Button>(R.id.item1).setOnClickListener {
        listener?.onItemSelected(1)
    }
    // 为item2按钮设置点击监听器，当点击时通知监听器选中了ID为2的项
    view.findViewById<Button>(R.id.item2).setOnClickListener {
        listener?.onItemSelected(2)
    }
}
    // 2. --------------------------------------
    // 当 Fragment 与 Activity 建立关联时调用（Fragment 附加到 Activity）
    override fun onAttach(context: Context) {
        super.onAttach(context)
        // 检查宿主 Activity 是否实现了自定义接口（OnItemSelectedListener）
        // 如果实现了，就将 Activity 作为回调监听器保存起来
        if (context is OnItemSelectedListener) {
            listener = context
        } else {
            // 如果没有实现，则抛出运行时异常提示必须实现OnItemSelectedListener接口
            throw RuntimeException("$context 必须实现 OnItemSelectedListener")
        }
    }
    // 当 Fragment 与 Activity 解除关联时调用（Fragment 从 Activity 中移除）
    override fun onDetach() {
        super.onDetach()
        // 将listener置为null，避免内存泄漏
        listener = null
    }

}